昨天我們將資料進行處理後就可以進入我們的重頭戲模型訓練啦,首先我們要先用Sequential這個模組來建立模型,那麼Sequential是什麼東西呢?
Sequential是一個在Keras中用來建造網路架構的模組,我們會在裡面使用兩種方法,一個是使用add方法來疊加層數,另一個是利用Dense設定輸入層和輸出層。直接來演示一次給大家看吧。
首先先載入Sequential模組來建立Sequential模型
from keras.models import Sequential
model = Sequential()
再來載入Dense
from keras.layers import Dense
利用add方法和Dense建立輸入層和隱藏層,需要設定的參數有隱藏層神經元數目、輸入層神經元數目、初始化權重(weight)和配置(bias)、激勵函式
model.add(Dense(units=256,
input_dim=784,
kernel_initializer='normal',
activation='relu'))
units=256表示隱藏層神經元有256個
input_dim=784表示輸入層神經元有784個
kernel_initializer='normal'代表的是使用常態分佈的亂數
activation='relu'是指激勵函式使用relu,relu是一個非線性函數,定義為f(x)=max(0,x)。
建立完輸入層來建立輸出層
model.add(Dense(units=10,
kernel_initializer='normal',
activation='softmax'))
在這邊不需要設定輸出層,因為它會沿用上面設定好的256個隱藏層神經元
units=10表示輸出層神經元有10個
activation='softmax’是指激勵函式使用softmax,softmax用於多類別分類問題,計算如下:
建立完輸入層、隱藏層和輸出層就可以進行訓練了,直接進行演示:
利用compile方法設定Loss損失函數、最佳化方法(在深度學習使用’adam’效率較高、metrics評估準確度
model.compile(loss='categorical_crossentropy',
optimizer='adam', metrics=['accuracy'])
最後就可以進行訓練啦
需要的設定參數有特徵值和標籤、訓練資料占比、訓練次數、每次讀取幾筆資料、顯示訓練過程
train_history = model.fit(x=train_feature_normalize,
y=train_label_onehot,validation_split=0.2,
epochs=10, batch_size=200,verbose=2)
出現這個結果就是已經訓練完成了